package com.clstu.utils;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;

/**
 * 这是一个jdbc连接mysql的工具 类连接资源和关闭资源
 */
public class JDBCUtils {
    private static String user;
    private static String password;
    private static String url;
    private static String driver;

    static {//静态初始化变量
        Properties properties = new Properties();
        try {
            properties.load(new FileInputStream("src\\mysql.properties"));
            user=properties.getProperty("user");
            password=properties.getProperty("password");
            url=properties.getProperty("url");
            driver=properties.getProperty("driver");
        } catch (IOException e) {
            //在实际开发中,经常这样处理
            /*
            1.将编译异常转成运行异常
            2.这是调用者可以选择捕获该异常,也可以选择默认处理,比较方便
             */
            throw new RuntimeException(e);
        }
    }

    //连接数据库,返回connection
    public static Connection getConnection(){
        try {
            Class.forName(driver);
            return DriverManager.getConnection(url,user,password);
        } catch (SQLException | ClassNotFoundException e) {
            //在实际开发中,经常这样处理
            /*
            1.将编译异常转成运行异常
            2.这是调用者可以选择捕获该异常,也可以选择默认处理,比较方便
             */
            throw new RuntimeException(e);
        }
    }

    //关闭资源
    /*
         传入需要关闭的参数,不需要关闭传入null即可,
     */
    public static void close(ResultSet resultSet, Statement statement,Connection connection){
        try {
            if(resultSet!=null) resultSet.close();
            if(statement!=null) statement.close();
            if(connection!=null) connection.close();
        } catch (SQLException e) {
            //在实际开发中,经常这样处理
            /*
            1.将编译异常转成运行异常
            2.这是调用者可以选择捕获该异常,也可以选择默认处理,比较方便
             */
            throw new RuntimeException(e);
        }
    }
}
